package cn.edu.zsc.blms.service.impl.array;

import cn.edu.zsc.blms.App;
import cn.edu.zsc.blms.domain.Reader;
import cn.edu.zsc.blms.service.ReaderService;
import cn.edu.zsc.blms.exception.EntityNotExistException;

public class ReaderServiceImpl implements ReaderService {
    /**
     * 单例
     */
    private static ReaderService singleton;

    /**
     * 私有构造方法
     */
    private ReaderServiceImpl() {

    }
    /**
     * 获取单例，非线程安全
     *
     * @return ReaderService单例
     */
    public static ReaderService getSingleton(){
        if(singleton == null){
            singleton = new ReaderServiceImpl();
        }
        return singleton;
    }
    /**
     * 存储读者信息
     */
    public Reader[] DATA=new Reader[100];
    /**
     * ID计数器
     */
    public int idCounter;

    /**
     * 添加读者
     */
    public void create (){
        //TODO:添加读者
        if(idCounter>=DATA.length){
            System.out.println("读者数量已满，不能再添加");
            return;
        }
        System.out.println("请输入姓名：");
        String name= App.input.nextLine();
        System.out.println("请输入电话");
        String phone=App.input.nextLine();
        Reader reader =new Reader(idCounter,name,phone);
        DATA[idCounter]=reader;
        System.out.println("成功增加一名读者！");
        idCounter++;
    }
    /**
     * 禁用读者
     */
    @Override
    public void disable(){
        System.out.print("请输入要禁用的读者ID：");
        Reader reader = null;
        try{
            reader = (Reader)getOne();
        }catch(EntityNotExistException e) {
            System.out.println(e.getMessage());
        }
        if(reader!=null){
            reader.disabled=true;
            System.out.println("该用户已被禁用");
        }
    }


    /**
     * 修改读者
     */
    @Override
    public void update(){

        System.out.println("请输入要编辑的读者ID：");
        Reader reader=null;
        try{
            reader = (Reader)getOne();
        }catch(EntityNotExistException e){
            System.out.println(e.getMessage());
        }
        if(reader!= null){
            System.out.print("请输入姓名，直接按回车表示不修改：");
            String name = App.input.nextLine();
            reader.name="".equals(name)? reader.name:name;
            System.out.println("请输入电话，直接按回车表示不修改：");
            String phone = App.input.nextLine();
            reader.phone ="".equals(phone)? reader.phone : phone;
            System.out.println("该用户的信息已被修改");
        }
    }
    /**
     * 查询读者
     */
    @Override
    public void query(){
        //TODO:查询读者
        System.out.print("请输入要查询的读者姓名：");
        String name=App.input.nextLine();
        //TODO:根据读者姓名模糊查询，并打印查询结果，暂且打印所有读者信息
        for(int i=0;i<idCounter;i++){
            Reader reader=(Reader)DATA[i];
            if(reader.name!=null && reader.name.contains(name)){
                System.out.println(reader);
            }
        }
    }
    /**
     * 获取用户输入的有效ID值，返回-1表示用户的ID值是无效的
     *
     * @return ID值
     */

}
